Server virtualization technology allows multiple virtual machines to run concurrently on a single physical computing system. Currently, data center environments are used to create large clusters of such physical computing systems (commonly referred to as servers), where each server runs multiple virtual machines (VMs). This approach has led to data centers that can supply massive amounts of computing power. Several providers currently allow users to supply virtual machine instances to run on the virtualization servers provided by the operator of the data center. In various forms, this general model of computing has come to be referred to as “cloud computing” or “Infrastructure as a Service” (IaaS) because users simply run their virtual machine instances on an abstract hardware platform, without having to own or manage that hardware platform. This approach allows a given user to rapidly scale up dozens, if not hundreds or thousands of virtual machine instances to respond to changes in demand for computing resources.
At the same time, a significant obstacle faced by of cloud computing and IaaS providers is the need for users to trust the cloud provider and the implementation of the hypervisor (or Virtual Machine Manager, (VMM)) that manages multiple VMs running on a server. Currently this is done by audits and understanding of the operating processes that cloud providers have in place in regards to security. This leads to a sense of trust, but there is not a strong mechanism to guarantee effective separation between VMs executed in the same central processing unit (CPU) server socket.
The fact that VMs belonging to different enterprises are collocated in the same server can lead to side attacks and security concerns. For example, when VMs belonging to different enterprises are executed in distinct cores of the same CPU, they share access to memory via an L3 cache (or bypassing memory protections set by the hypervisor). In the hands of skilled individuals, this could lead to information being leaked from one VM to the other. That is, a malicious VM from one enterprise could try to gain access the memory of a VM running on behalf of another enterprise.
Another concern is the hypervisor itself. Even if the hypervisor is designed to enforce separation between distinct VMs, data could still leak from one VM to the other, either for a hypervisor bug or for explicit attacks directed against the hypervisor itself. Further, another set of attacks could be launched by a malicious administrator who is part of the cloud provider personnel.